home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / arch / um / include / asm / processor-generic.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  2.8 KB  |  137 lines

  1. /* 
  2.  * Copyright (C) 2000 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)
  3.  * Licensed under the GPL
  4.  */
  5.  
  6. #ifndef __UM_PROCESSOR_GENERIC_H
  7. #define __UM_PROCESSOR_GENERIC_H
  8.  
  9. struct pt_regs;
  10.  
  11. struct task_struct;
  12.  
  13. #include "asm/ptrace.h"
  14. #include "registers.h"
  15. #include "sysdep/archsetjmp.h"
  16.  
  17. struct mm_struct;
  18.  
  19. struct thread_struct {
  20.     struct task_struct *saved_task;
  21.     /*
  22.      * This flag is set to 1 before calling do_fork (and analyzed in
  23.      * copy_thread) to mark that we are begin called from userspace (fork /
  24.      * vfork / clone), and reset to 0 after. It is left to 0 when called
  25.      * from kernelspace (i.e. kernel_thread() or fork_idle(),
  26.      * as of 2.6.11).
  27.      */
  28.     int forking;
  29.     struct pt_regs regs;
  30.     int singlestep_syscall;
  31.     void *fault_addr;
  32.     jmp_buf *fault_catcher;
  33.     struct task_struct *prev_sched;
  34.     unsigned long temp_stack;
  35.     jmp_buf *exec_buf;
  36.     struct arch_thread arch;
  37.     jmp_buf switch_buf;
  38.     int mm_count;
  39.     struct {
  40.         int op;
  41.         union {
  42.             struct {
  43.                 int pid;
  44.             } fork, exec;
  45.             struct {
  46.                 int (*proc)(void *);
  47.                 void *arg;
  48.             } thread;
  49.             struct {
  50.                 void (*proc)(void *);
  51.                 void *arg;
  52.             } cb;
  53.         } u;
  54.     } request;
  55. };
  56.  
  57. #define INIT_THREAD \
  58. { \
  59.     .forking        = 0, \
  60.     .regs               = EMPTY_REGS,    \
  61.     .fault_addr        = NULL, \
  62.     .prev_sched        = NULL, \
  63.     .temp_stack        = 0, \
  64.     .exec_buf        = NULL, \
  65.     .arch            = INIT_ARCH_THREAD, \
  66.     .request        = { 0 } \
  67. }
  68.  
  69. extern struct task_struct *alloc_task_struct(void);
  70.  
  71. static inline void release_thread(struct task_struct *task)
  72. {
  73. }
  74.  
  75. extern int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags);
  76.  
  77. static inline void prepare_to_copy(struct task_struct *tsk)
  78. {
  79. }
  80.  
  81.  
  82. extern unsigned long thread_saved_pc(struct task_struct *t);
  83.  
  84. static inline void mm_copy_segments(struct mm_struct *from_mm,
  85.                     struct mm_struct *new_mm)
  86. {
  87. }
  88.  
  89. #define init_stack    (init_thread_union.stack)
  90.  
  91. /*
  92.  * User space process size: 3GB (default).
  93.  */
  94. extern unsigned long task_size;
  95.  
  96. #define TASK_SIZE (task_size)
  97.  
  98. #undef STACK_TOP
  99. #undef STACK_TOP_MAX
  100.  
  101. extern unsigned long stacksizelim;
  102.  
  103. #define STACK_ROOM    (stacksizelim)
  104. #define STACK_TOP    (TASK_SIZE - 2 * PAGE_SIZE)
  105. #define STACK_TOP_MAX    STACK_TOP
  106.  
  107. /* This decides where the kernel will search for a free chunk of vm
  108.  * space during mmap's.
  109.  */
  110. #define TASK_UNMAPPED_BASE    (0x40000000)
  111.  
  112. extern void start_thread(struct pt_regs *regs, unsigned long entry, 
  113.              unsigned long stack);
  114.  
  115. struct cpuinfo_um {
  116.     unsigned long loops_per_jiffy;
  117.     int ipi_pipe[2];
  118. };
  119.  
  120. extern struct cpuinfo_um boot_cpu_data;
  121.  
  122. #define my_cpu_data        cpu_data[smp_processor_id()]
  123.  
  124. #ifdef CONFIG_SMP
  125. extern struct cpuinfo_um cpu_data[];
  126. #define current_cpu_data cpu_data[smp_processor_id()]
  127. #else
  128. #define cpu_data (&boot_cpu_data)
  129. #define current_cpu_data boot_cpu_data
  130. #endif
  131.  
  132.  
  133. #define KSTK_REG(tsk, reg) get_thread_reg(reg, &tsk->thread.switch_buf)
  134. extern unsigned long get_wchan(struct task_struct *p);
  135.  
  136. #endif
  137.